﻿#include "WRWorkSession.h"
#include "WRWorkObject.h"

//初始化工作域。
WRWorkSession::WRWorkSession(WRWorkDomain* domain)
    : m_refCnt(1)
{
    m_domain = domain;
}
//释放当前对象所占用的相关资源。
WRWorkSession::~WRWorkSession()
{
    const WRArray<WRWorkObject*>& objects = m_objects.filter();
    for(WRu i = 0, l = objects.count(); i < l; ++i)
    {
        WRWorkObject* entry = objects[i];
        delete entry;
    }
}

//添加对象引用。
void WRWorkSession::addRef(void)
{
    m_refCnt.ref();
    m_domain->addRef();
}
//释放对象引用, 如果引用计数为0，则删除对象，返回True，否则返回False。
bool WRWorkSession::release(void)
{
    if (!m_refCnt.deref())
    {
        delete this;
        return true;
    }
    m_domain->release();
    return false;
}
